package control;

import java.util.ArrayList;

/**
 * @author Jochen
 * 
 * @since 28.04.2011
 * @version 05.05.11 - Johannes - Changed the type of the player variable form string to int
 * @version 05.05.11 - Johannes - AddedMethod getStreetnamesOfColorGroup
 * @version 05.05.11 - Jochen - added method setCosts, setHousePrice
 * @version 09.05.2011 - Jochen - added method getStreetNumber(), setOwner()
 * @version 12.05.2011 - Jochen - added variants
 * @version 13.05.2011 - Thomas - added method to handle the removal of a player
 * @version 13.05.2011 - Thomas - added method to handle differnet boards;
 */
public interface IFieldsControl {

	public ArrayList<String> getVariants();
	public void setVariants(ArrayList<String> givenVariants);
	public String getType(int id);    
    public String getName(int id);    
    public int getHousePrice(int id);    
    public String getColour(int id);    
    public int getOwner(int id);  //05.05.11 - Johannes - changed player type from string to int 
    public int getCosts(int id);    
    public int getHouses(int id);    
    public int getPlantRent(int number);
    public int getStationRent(int number);
    public int getRent(int fieldID, int playerNumber); //05.05.11 - Johannes - changed player type from string to int 
    public int getRentHouse0(int fieldID);
    public int getRentHouse1(int fieldID);
    public int getRentHouse2(int fieldID);
    public int getRentHouse3(int fieldID);
    public void kiRemoveHouses(int ID);
    public int getRentHouse4(int fieldID);
    public int getRentHotel(int fieldID);
    public int getStreetNumber(String streetName);
    public ArrayList<String[]> getStreetnamesOfColorGroup(String color);//05.05.11 - Johannes - added this method
    public void setHousePrice(int fieldID, int price); //05.05.11 - Jochen - added this method
    public void setCosts(int fieldID, int costs); //05.05.11 - Jochen - added this method
    public void setplantRentMultiplicator(int onePlant, int twoPlant);
    public void setstationRent(int oneStation, int twoStation, int threeStation, int fourStation);
    public void setRent(int fieldID, int rent);
    public void setRentHouse1(int fieldID, int rent);
    public void setRentHouse2(int fieldID, int rent);
    public void setRentHouse3(int fieldID, int rent);
    public void setRentHouse4(int fieldID, int rent);
    public void setRentHotel(int fieldID, int rent);
    public void setOwner(int fieldID, int newOwner);
    public ArrayList<Integer> getMyFields(int playerNumber); //05.05.11 - Johannes - changed player type from string to int
    public boolean getDoIHaveStreetGroup(String colour, int playerNumber); //05.05.11 - Johannes - changed player type from string to int 
    public ArrayList<Integer> getFieldList(String Type);
    public int buyStreet(int fieldID, int currentPlayer); //05.05.11 - Johannes - changed player type from string to int 
    public int buildHouse(int fieldID, int currentPlayer); //05.05.11 - Johannes - changed player type from string to int
    public int sellHouse(int fieldID, int currentPlayer); //05.05.11 - Johannes - changed player type from string to int
    public ArrayList<Integer> getWhereCanPlayerBuildNextInStreetGroup(int playerNumber, String colour); //05.05.11 - Johannes - changed player type from string to int
    public void updateAfterPlayerLost(int currentPlayer); //13.05.2011 - Thomas added method that handles after a player has been removed
    public void setBoard(String board); //13.05.2011 - Thomas added method that handles the board selection
    public String getBoard();//13.05.2011 - Thomas added method that handles the board selection
} 